import 'package:flutter_mes_app/common/index.dart';
import 'package:get/get.dart';
import 'package:pull_to_refresh_flutter3/pull_to_refresh_flutter3.dart';

class WoreportworkIndexController extends GetxController {
  WoreportworkIndexController();

  // 刷新控制器
  final RefreshController refreshController = RefreshController(
    initialRefresh: true,
  );

  // 列表
  List<WoreportworkTaskListItemModel> items = [];

  // 页码
  int _pageNo = 1;

  // 页尺寸
  final int _pageSize = 30;

  _initData() {
    update(["woreportwork_index"]);
  }

  // 拉取数据
  // isRefresh 是否是刷新
  Future<bool> _loadSearch(bool isRefresh) async {
    print("是否是刷新");
    // 拉取数据
    var result = await WoreportworkApi.taskList(CommonPagesReq(
        // 刷新, 重置页数1
        pageNo: isRefresh ? 1 : _pageNo,
        // 每页条数
        pageSize: _pageSize,
        wheres: [],
        fields: []));
    // 下拉刷新
    if (isRefresh) {
      _pageNo = 1; // 重置页数1
      items.clear(); // 清空数据
    }

    // 有数据
    if (result.isNotEmpty) {
      // 页数+1
      _pageNo++;

      // 添加数据
      items.addAll(result);
    }
    print(items.length);
    // 是否空
    return result.isEmpty;
  }

  // 上拉载入新商品
  void onLoading() async {
    print("items.isNotEmpty${items.isNotEmpty}");
    if (items.isNotEmpty) {
      try {
        // 拉取数据是否为空
        var isEmpty = await _loadSearch(false);

        if (isEmpty) {
          // 设置无数据
          refreshController.loadNoData();
        } else {
          // 加载完成
          refreshController.loadComplete();
        }
      } catch (e) {
        // 加载失败
        refreshController.loadFailed();
      }
    } else {
      // 设置无数据
      refreshController.loadNoData();
    }
    update(["woreportwork_index"]);
  }

  // 下拉刷新
  void onRefresh() async {
    try {
      await _loadSearch(true);
      refreshController.refreshCompleted();
    } catch (error) {
      // 刷新失败
      refreshController.refreshFailed();
    }
    update(["woreportwork_index"]);
  }

  void onTap() {}

  // @override
  // void onInit() {
  //   super.onInit();
  // }

  @override
  void onReady() {
    super.onReady();
    _initData();
  }

  @override
  void onClose() {
    super.onClose();
    // 刷新控制器释放
    refreshController.dispose();
  }
}
